<?php

/**
 * Description of TplRisicoaandachtsgebied
 * 
 * Dit is de klasse die onder sjabloon hangt. Het Risicoaandachtsgebied
 * is in feite hetzelfde als een hoofdstuk van een V&G plan. Deze beschrijft
 * waarop er gecontroleerd gaat worden. Bijvoorbeeld in ruimtes.., in de buurt
 * van.., met gebruik van.. etc. 
 *
 * @author Randy
 * @version 1.0
 * 
 * @category Cofely - Veiligheid & Gezondheids plan sjabloon
 * @uses TextObject, DbRisicoaandachtsgebied, Risicogebied, Versie
 * 
 */

require_once 'defs/Constants.php';
include_once (FILE_CLASS_TPL_RISICOGEBIED);
include_once (FILE_DB_TPL_RISICOAANDACHTSGEBIED);

class TplRisicoaandachtsgebied extends TextObject{
    /**
     * Deze array bevat alle ingevoerde Risicogebieden die bij het huidige 
     * Risicoaandachtsgebied hoort.
     * @var array $risicogebied_array
     */
    private $risicogebied_array = array();
    /**
     * De current risicogebied idx is de huidige index van het risicogebied array
     * @var int $current_risicogebied_idx
     */
    private $current_risicogebied_idx = '';
    /**
     * De naam van het door de gebruiker ingevulde risicoaandachtsgebied
     * @var String $naam
     */
    private $naam = '';
    /**
     * De beschrijving van het door de gebruiker ingevulde risicoaandachtsgebied
     * @var String $beschrijving
     */
    protected $beschrijving = '';
    
    /**
     * De contructor functie die wordt aangeroepen zodra er een instantie van deze
     * klasse wordt gemaakt
     * @param String $tpl_risicoaandachtsgebied 
     */
    public function __construct($tpl_risicoaandachtsgebied = ''){
        //Als het risicoaandachtsgebied niet leeg is, set je de beschrijving
        if(!empty($tpl_risicoaandachtsgebied)){ 
            $this->setBeschrijving($tpl_risicoaandachtsgebied);
        }
        
    }
    /**
     * de Setter van de risicoaandachtsgebied naam
     * @param String $naam 
     */
    public function setNaam( $naam ){
        
        $this->naam = $naam;
    }
    /**
     * de Setter van de risicoaandachtsgebied beschrijving / helptekst
     * @param type $beschrijving 
     */
    public function setBeschrijving($beschrijving){
        
        $this->beschrijving = $beschrijving;
    }
    /**
     * de Getter van de risicoaandachtsgebied naam, returned de String $naam
     * @return String $naam
     */
    public function getNaam(){
        
       return $this->naam; 
        
    }
    /**
     * De Getter van de risicoaandachtsgebied beschrijving, returned de String $beschrijving
     * @return String $beschrijving
     */
    public function getBeschrijving(){
        
        return $this->beschrijving;
        
    }
    /**
     * Deze check functie kijkt of er een risicogebied is aangemaakt, zo niet, krijg je een error
     * @param String $risicogebiednaam
     * @return boolean 
     */
    public function check($risicogebiednaam){
        
        if(empty($risicogebiednaam)){
            echo TPL_RISICOAG_ERROR_LEEGRISICOGEBIED;
            return false;
        }
    }
    /**
     * Deze functie slaat het sjabloon_versie_id, risicoaandachtsgebied naam en de beschrijving op
     * in de database. Daarna worden alle risicogebieden die hieronder vallen opgeslagen.
     * 
     * @param int $sjabloon_versie_id
     * @param String $risicoaandachtsgebied_naam
     * @param String $risicoaandachtsgebied_beschrijving 
     */
    public function save( $sjabloon_versie_id, $risicoaandachtsgebied_naam, $risicoaandachtsgebied_beschrijving){
        //Maak een object van het risicoaandachtsgebied
        $db_risicoaandachtsgebied = new DbRisicoaandachtsgebied();
        //Sla het risicoaandachtsgebied op met zijn naam en beschrijving
        $db_risicoaandachtsgebied->save( $sjabloon_versie_id, $risicoaandachtsgebied_naam, $risicoaandachtsgebied_beschrijving);
        //Haal het id op uit de database en stop deze in $id
        $id = $db_risicoaandachtsgebied->getRisicoaandachtsgebied_id();

        // Sla alle risicogebieden van een risicoaandachtsgebied op in de database
        foreach( $this->risicogebied_array as $idx => $obj){

            $this->risicogebied_array[$idx]->save( $sjabloon_versie_id, $obj->getNaam(), $obj->getBeschrijving(), $id );

        }     

}
    /**
     * Deze functie voegt een risicogebied to aan het risicogebied_array
     * 
     * @param String $risicogebiednaam
     * @param String $risicogebiedbeschrijving 
     */
    public function addRisicogebied( $risicogebiednaam, $risicogebiedbeschrijving ){
        //Kijk of er een risicogebied is gemaakt
        $this->check($risicogebiednaam);
        //Maak een nieuw Risicogebied object aan voor elke entry in de array
        $this->risicogebied_array[] = new TplRisicogebied();
        //Bepaal de index van de array
        $this->current_risicogebied_idx = count($this->risicogebied_array)-1;
        //Set de informatie van een risicogebied
        $this->risicogebied_array[$this->current_risicogebied_idx]->setNaam($risicogebiednaam);
        $this->risicogebied_array[$this->current_risicogebied_idx]->setBeschrijving($risicogebiedbeschrijving);
    }
    /**
     * Deze functie voegt een risico toe aan het risicogebied_array
     * @param String $risiconaam
     * @param String $risicobeschrijving 
     */
   public function addRisico( $risiconaam, $risicobeschrijving ){
       //voeg een risico toe aan het risicogebied_array
        $this->risicogebied_array[$this->current_risicogebied_idx]->addRisico($risiconaam, $risicobeschrijving);
                
    }
   /**
    * Deze functie voegt een maatregel toe aan het risico_gebied_array
    * @param String $maatregelnaam
    * @param String $maatregelbeschrijving 
    */
    public function addMaatregel( $maatregelnaam, $maatregelbeschrijving ){
        //voeg een maatregel toe aan het risicogebied_array
        $this->risicogebied_array[$this->current_risicogebied_idx]->addMaatregel($maatregelnaam, $maatregelbeschrijving);
        
    }
}

?>